<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>打开控制台查看结果</div>

    <script>
        console.log('=========Promise.resolve()=========');
        /*
           Promise.resolve()可以将现有对象转为Promise对象，Promise.resolve()方法就起到这个作用。
           语法：let p = Promise.resolve(obj)
        */
       let p = Promise.resolve('obj')
       p.then(el=> console.log(el))  // obj
       // 其实相当于
       let p2 = new Promise(resolve=>resolve('obj'))

       /*
          如果Promise.rsolve()没有参数，那么将直接返回resolved状态的Promise对象，并且是一个没有参数的then方法。
       */
      let p3 = Promise.resolve()
      p3.then(el=>{
        console.log(el);  // undefined
      })


        setTimeout(()=>{
            console.log('定时器');
        },0)
        Promise.resolve()
        .then(()=>{
            setTimeout(()=>{console.log('resolve内定时器')},0)
            console.log('resolve内部');
        })
        console.log('外部');
        /*
           Promise的执行顺序，Promise是一个异步的微任务，同步任务执行完后才会执行异步任务，异步的微任务会先执行，微任务执行完后才会执行异步的宏任务，此处的setTimeout是异步的宏任务，所以会最后执行，外部的定时器是异步的宏任务，Promise内部的定时器是异步微任务内的宏任务，所以微任务内的宏任务会更慢执行，此处的执行顺序为：外部、resolve内部、定时器、resolve内定时器。
        */



       
    </script>
</body>
</html>